Original Note

2.1 Automatically Testing Software

  • self_study_notes
  • Original Note
  • Updated: unknown
Source Collection
self_study_notes
Source Path
self_study_notes/python software/Automatically Testing/整理版/2.1 Automatically Testing Software.md
Type
Original Note
Updated At
unknown

2.1 Automatically Testing Software:Pytest 基础测试(整理版)

原始笔记Pytest.md created: 2026-07-25 14:55 整理说明:原笔记没有提供有效的教程链接,因此本版本只整理现有正文中的测试正确性、测试发现、结果符号和 pytest.raises

内容简要概括

测试不仅要验证被测代码是否返回正确结果,还必须保证测试自身的判断是正确的,因此测试用例应尽量简单清晰。pytest 会发现以 test_ 开头的测试函数,并用简洁符号报告执行结果。对于预期失败的输入,可以使用 pytest.raises 验证函数是否抛出了指定异常。

pytest、单元测试、测试发现、test_、assertion、.F、异常测试、pytest.raisesTypeError

目录


1. 测试本身也需要正确

除了确认代码返回正确答案,还需要确保测试本身的预期和判断也是正确的。一个实用原则是让测试保持足够简单,使输入、预期输出和断言之间的关系容易人工核对。

测试越复杂,就越可能把错误藏在测试代码自身之中。单个测试应尽量聚焦一种行为,并清楚表达失败的原因。

2. 测试发现与结果符号

一次成功的测试运行可能产生如下输出:

============================================== test session starts =================================
platform darwin -- Python 3.11.4, pytest-7.4.3, pluggy-1.3.0
rootdir: /Users/alex/work/SSI/training/lessons/python-intermediate-inflammation
plugins: anyio-4.0.0
collected 2 items

tests/test_models.py ..                                                                       [100%]

=============================================== 2 passed in 0.79s ==================================

pytest 会查找名称以 test_ 开头的函数并逐个运行。测试脚本名称后的符号表示各测试的结果:

  • .:测试函数执行完成,没有触发失败的 assertion,测试通过;
  • F:assertion 失败,测试未通过;
  • 如果执行中发生错误,pytest 也会把该测试计为失败并输出错误信息。

上面的 .. 表示收集到的两个测试均已通过。

3. 测试预期异常

有些输入本来就应该触发异常,因此“抛出异常”也可以是正确行为。可以用 pytest.raises 验证异常类型:

import pytest
from inflammation.models import daily_min

def test_daily_min_string():
    """Test for TypeError when passing strings"""

    with pytest.raises(TypeError):
        daily_min([["Hello", "there"], ["General", "Kenobi"]])

pytest.raises 的含义

with pytest.raises(TypeError):
    daily_min(...)

这段代码表示:执行 with 代码块中的代码,并期待它抛出 TypeError

函数行为 测试结果
抛出 TypeError 测试通过
没有抛出异常 测试失败
抛出其他异常,如 ValueError 测试失败

这种测试既验证异常确实发生,也验证异常类型符合接口预期。

待确认问题

  • 原笔记中的“原始教程”链接为空;本版本没有推断或补写教程地址。

Evidence-backed relations

Source Note · Same Topic

切换到中文